#pragma once

namespace ann
{
	class ANN_Node;

	class Tube
	{
	public:
	
		Tube(void): m_data(0.0)
		{
		}
	
		Tube( const double pData ): m_data( pData )
		{
		}
	
		virtual ~Tube(void)
		{
		}
	
		inline	double	GetValue    ( void )                { return m_data; }
		inline	double	GetValue    ( void ) const          { return m_data; }
		inline	double	GetWeight   ( void )                { return m_weight; }
		inline	double	GetWeight   ( void ) const          { return m_weight; }
		inline	void	SetValue    ( const double pData )  { m_data    = pData;    }
		inline	void	SetWeight   ( const double pWeight ){ m_weight  = pWeight;  }
		inline	void	SetSrcNode  ( ANN_Node *pNode )     { m_psrc    = pNode;    }
		inline	void	SetDestNode ( ANN_Node *pNode )     { m_pdest   = pNode;    }

        inline  void    operator=   ( const double rls )    { this->m_weight = rls; }
	
	private:
        //TODO: data should be removed from tube
		double		m_data;
		double		m_weight;
		ANN_Node	*m_psrc;
		ANN_Node	*m_pdest;
	};
	
}
